package 数据结构练习.summer;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.PriorityQueue;

public class day8 {
    /*
    给你一份『词汇表』（字符串数组）words和一张『字母表』（字符串）chars。
    假如你可以用chars中的『字母』（字符）拼写出 words中的某个『单词』（字符串），那么我们就认为你掌握了这个单词。
    注意：每次拼写（指拼写词汇表中的一个单词）时，chars 中的每个字母都只能用一次。
    返回词汇表words中你掌握的所有单词的 长度之和
    https://leetcode.cn/problems/find-words-that-can-be-formed-by-characters
     */
    public int countCharacters(String[] words, String chars) {
        int count=0,t=0;
        String tempWords;
        for (int i=0;i< words.length;i++) {
            ArrayList<Character> temp=new ArrayList<>();
            for (int j = 0; j < chars.length(); j++) {
                temp.add(chars.charAt(j));
            }
            tempWords=words[i];
            for (int o = 0; o < tempWords.length(); o++) {
                char iu=tempWords.charAt(o);
                if (temp.contains(iu)){
                    t++;
                    temp.remove(Character.valueOf(iu));
                }
            }
            if (t==tempWords.length()){
                count+=t;
            }
            t=0;
        }
        return count;
    }

    /*
    给你一个字符串 date ，按 YYYY-MM-DD 格式表示一个现行
    公元纪年法 日期。返回该日期是当年的第几天。
    https://leetcode.cn/problems/day-of-the-year/
     */
    public int dayOfYear(String date) {
        int year = Integer.parseInt(date.substring(0, 4));
        int month = Integer.parseInt(date.substring(5, 7));
        int day = Integer.parseInt(date.substring(8));
        int[] allDay={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        int count=0;
        if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)){
            for (int i = 0; i < month-1; i++) {
                count+=allDay[i];
            }
            if (month>2)count++;
        }else {
            for (int i = 0; i < month-1; i++) {
                count+=allDay[i];
            }
        }
        return count+day;
    }
}
